console.log("sw");

// 定义缓存的名字
var cacheStorageKey = "minimal-pwa";

// 定义需要缓存的文件列表
var cacheList = ["/index.html", "/index.css", "/logo.webp"];

// self 在 Worker 里面相当于 Global
self.addEventListener("install", (e) => {
  // 进入 Service Worker 的安装事件，发生在浏览器安装并成功注册 Service Worker 后
  console.log("installing", e);

  e.waitUntil(
    // 打开 cache 对象，这是一个全局变量
    caches
      .open(cacheStorageKey)
      .then((cache) => {
        // 添加到缓存中
        // cache.add('/logo.webp'))
        return cache.addAll(cacheList);
      })
      .then(() => self.skipWaiting()) // 为了在页面更新的过程当中, 新的 Service Worker 脚本能立即激活和生效
  );
});

// 拦截请求，本地有缓存则返回缓存文件
self.addEventListener("fetch", function (e) {
  const url = new URL(e.request.url);
  console.log("客户端的请求：", e.request);
  console.log("客户端的请求URL：", url);

  e.respondWith(
    caches
      .match(e.request) //检查传入的请求 URL 是否匹配当前缓存中存在的任何内容
      .then((response) => {
        if (response) {
          return response;
        }
        return fetch(e.request);
      })
  );
});
